{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## PID实现轨迹跟踪"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "假设无人车模型如下\n",
    "\n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/98de36e913bd4fcd86b4f3ac933b0afc.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "# %matplotlib notebook\n",
    "# %matplotlib qt5\n",
    "# %matplotlib auto\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "class KinematicModel_3:\n",
    "  \"\"\"假设控制量为转向角delta_f和加速度a\n",
    "  \"\"\"\n",
    "\n",
    "  def __init__(self, x, y, psi, v, L, dt):\n",
    "    self.x = x\n",
    "    self.y = y\n",
    "    self.psi = psi\n",
    "    self.v = v\n",
    "    self.L = L\n",
    "    # 实现是离散的模型\n",
    "    self.dt = dt\n",
    "\n",
    "  def update_state(self, a, delta_f):\n",
    "    self.x = self.x+self.v*math.cos(self.psi)*self.dt\n",
    "    self.y = self.y+self.v*math.sin(self.psi)*self.dt\n",
    "    self.psi = self.psi+self.v/self.L*math.tan(delta_f)*self.dt\n",
    "    self.v = self.v+a*self.dt\n",
    "\n",
    "  def get_state(self):\n",
    "    return self.x, self.y, self.psi, self.v\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "导入PID控制器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n",
    "from PID_controller import PID_posi_2,PID_inc\n",
    "## 位置式\n",
    "PID = PID_posi_2(k=[2, 0.025, 20], target=0, upper=np.pi/6, lower=-np.pi/6)\n",
    "## 增量式\n",
    "# PID = PID_inc(k=[1, 1, 15], target=0, upper=np.pi/6, lower=-np.pi/6)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "KDTree说明\n",
    "参考[资料](https://www.cnblogs.com/yibeimingyue/p/13797529.html#:~:text=%E7%94%A8%E6%B3%95%EF%BC%9A%20KDTree.query%28self%2C%20x%2C%20k%3D1%2C%20eps%3D0%2C%20p%3D2%2C%20distance_upper_bound%3Dinf%29%20%E6%9F%A5%E8%AF%A2kd-tree%E9%99%84%E8%BF%91%E7%9A%84%E9%82%BB%E5%B1%85,x%EF%BC%9Aarray_like%20python%20scipy%20spatial.KDTree.query%E7%94%A8%E6%B3%95%E5%8F%8A%E4%BB%A3%E7%A0%81%E7%A4%BA%E4%BE%8B%20-%20%E4%B8%80%E6%9D%AF%E6%98%8E%E6%9C%88%20-%20%E5%8D%9A%E5%AE%A2%E5%9B%AD)\n",
    "\n",
    "KDTree在这里的作用是用于搜索最临近的航路点\n",
    "\n",
    "这部分的功能也可以使用以下函数实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def cal_target_index(robot_state,refer_path):\n",
    "    \"\"\"得到临近的路点\n",
    "\n",
    "    Args:\n",
    "        robot_state (_type_): 当前车辆位置\n",
    "        refer_path (_type_): 参考轨迹（数组）\n",
    "\n",
    "    Returns:\n",
    "        _type_: 最近的路点的索引\n",
    "    \"\"\"\n",
    "    dists = []\n",
    "    for xy in refer_path:\n",
    "        dis = np.linalg.norm(robot_state-xy)\n",
    "        dists.append(dis)\n",
    "\n",
    "    min_index = np.argmin(dists)\n",
    "    return min_index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "主函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "MovieWriter ffmpeg unavailable; using Pillow instead.\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from scipy.spatial import KDTree\n",
    "from celluloid import Camera  # 保存动图时用，pip install celluloid\n",
    "\n",
    "\n",
    "# set reference trajectory\n",
    "refer_path = np.zeros((1000, 2))\n",
    "refer_path[:,0] = np.linspace(0, 100, 1000) # 直线\n",
    "refer_path[:,1] = 2*np.sin(refer_path[:,0]/3.0)#+2.5*np.cos(refer_path[:,0]/2.0) # 生成正弦轨迹\n",
    "refer_tree = KDTree(refer_path)  # reference trajectory\n",
    "\n",
    "\n",
    "\n",
    "# 假设初始状态为x=0,y=-1,偏航角=0.5rad，前后轴距离2m，速度为2m/s，时间步为0.1秒\n",
    "ugv = KinematicModel_3(0,-1,0.5,2,2,0.1)\n",
    "k=0.1\n",
    "c=2\n",
    "x_ = []\n",
    "y_ = []\n",
    "fig = plt.figure(1)\n",
    "# 保存动图用\n",
    "camera = Camera(fig)\n",
    "\n",
    "for i in range(550):\n",
    "    robot_state = np.zeros(2)\n",
    "    robot_state[0] = ugv.x\n",
    "    robot_state[1] = ugv.y\n",
    "    distance, ind = refer_tree.query(robot_state) # 在参考轨迹上查询离robot_state最近的点\n",
    "    # ind = cal_target_index(robot_state,refer_path)  # 使用简单的一个函数实现查询离robot_state最近的点，耗时比较长\n",
    "\n",
    "\n",
    "    alpha = math.atan2(refer_path[ind, 1]-robot_state[1], refer_path[ind, 0]-robot_state[0])\n",
    "    l_d = np.linalg.norm(refer_path[ind]-robot_state)\n",
    "    # l_d = k*ugv.v+c  # 前视距离\n",
    "    theta_e = alpha-ugv.psi\n",
    "    e_y = -l_d*math.sin(theta_e)  # 与博客中公式相比多了个负号，我目前还不是太理解，暂时先放着\n",
    "    # e_y = -l_d*np.sign(math.sin(theta_e))  # 第二种误差表示\n",
    "    # e_y = robot_state[1]-refer_path[ind, 1] #第三种误差表示\n",
    "    # PID.set_target(0)\n",
    "    # print(refer_path[i,1])\n",
    "    delta_f = PID.cal_output(e_y)\n",
    "    # print(e_y)\n",
    "    # print(alpha)\n",
    "    ugv.update_state(0,delta_f) # 加速度设为0\n",
    "\n",
    "    x_.append(ugv.x)\n",
    "    y_.append(ugv.y)\n",
    "\n",
    "    # 显示动图\n",
    "    plt.cla()\n",
    "    plt.plot(refer_path[:, 0], refer_path[:, 1], '-.b', linewidth=1.0)\n",
    "    plt.plot(x_, y_, \"-r\", label=\"trajectory\")\n",
    "    plt.plot(refer_path[ind, 0], refer_path[ind, 1], \"go\", label=\"target\")\n",
    "    # plt.axis(\"equal\")\n",
    "    plt.grid(True)\n",
    "    plt.pause(0.001)\n",
    "#     camera.snap()\n",
    "# animation = camera.animate()\n",
    "# animation.save('trajectory.gif')\n",
    "\n",
    "plt.figure(2)\n",
    "plt.plot(refer_path[:, 0], refer_path[:, 1], '-.b', linewidth=1.0)\n",
    "plt.plot(x_,y_,'r')\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "0c7484b3574347463e16b31029466871583b0d4e5c4ad861e8848f2d3746b4de"
  },
  "kernelspec": {
   "display_name": "Python 3.8.12 ('gobigger')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.12"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
